import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 设置中文字体和显示负号
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用SimHei字体
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号

# 读取Excel文件并提取相关数据
filename = '附件1.xlsx'  # 文件路径
data = pd.read_excel(filename)

# 将 "普通大棚" 和 "智慧大棚" 合并为 "大棚"
data['地块类型'] = data['地块类型'].replace({'普通大棚': '大棚', '智慧大棚': '大棚'})

# 按地块类型汇总面积
land_type_area = data.groupby('地块类型')['地块面积/亩'].sum()

# 使用explode参数将小类别的部分稍微突出显示出来
explode_values = [0.1 if area < 5 else 0 for area in land_type_area]  # 占比较小的部分用0.1分离

# 创建饼图
fig, ax = plt.subplots(figsize=(10, 8))
colors = plt.cm.Paired(np.linspace(0.2, 0.8, len(land_type_area)))  # 使用渐变色
wedges, texts, autotexts = ax.pie(
    land_type_area,
    labels=land_type_area.index,
    autopct='%1.1f%%',
    colors=colors,
    explode=explode_values,  # 分离较小的部分
    startangle=140,
    labeldistance=1,   # 调整标签距离饼图的距离
    pctdistance=0.6      # 调整比例文本距离饼图的距离
)

# 设置图表标题和字体
ax.set_title('不同种类耕地的占比情况', fontsize=20, fontweight='bold')

# 设置饼图标签和比例字体样式
for text in texts:
    text.set_fontsize(20)
for autotext in autotexts:
    autotext.set_fontsize(20)

# 保存图像为PNG格式
plt.savefig('fig/地块类型占比饼图_合并大棚.png', dpi=300)

# 显示图表
plt.show()
